Reduction of power consumption can be useful in a number of contexts, but is of particular interest in connection with mobile or portable devices such as laptop or other mobile or portable computers, portable audio-play, or other portable consumer electronic devices and the like. Power usage can also be of concern in connection with non-portable devices (e.g., desktop computers and the like), at least, since power consumption represents an energy cost generally paid by the user, and further it is generally correlated with an undesirably increased heat budget.
It is also possible to configure and/or manage disk drives so as to enhance disk drive performance (characteristics other than power consumption such as the effective amount of data that can be stored or retrieved per unit time and/or such as storage or retrieval reliability and the like). Some drives (such as some SCSI and/or ATA5 drives) use Native Command Queuing (NCQ) to reorder commands to achieve improved performance. Often, procedures which improve performance are opposite to procedures that save power. For example, although effective performance may be increased by fetching more data than requested (e.g., pre-fetch and/or post-fetch), at least, some such procedures, in previous approaches, increase average hard disk power consumption. In some audio playback devices, large amounts of audio data, e.g., according to a “play list” are transferred from disk to host memory, allowing the disk to be “spun down” while music is played back from memory.
Accordingly, it would be useful to provide a method and apparatus which can reduce the overall power consumption, preferably while retaining an ability to achieve at least some degree of performance enhancement.
At least some prior power-saving approaches have focused on aspects of the disk drive (as opposed, e.g., to the host device which sends data and/or instructions to, and/or receives data from, the disk drive). Such previous approaches can generally be considered as involving disk drive hardware or disk drive procedures (e.g., firmware or other programming executed in the disk drive, as opposed to the host device). Such disk drive-based approaches can have certain undesirable characteristics. Hardware approaches, which involve using relatively less power-consumptive devices, generally involve using undesirably high-cost parts. Providing for power-saving procedures within the drive (such as drive firmware or other programming) can involve several disadvantageous features. Such drive-based programming, especially firmware, is typically difficult, or completely infeasible, to change, e.g., once the drive has been manufactured, thus providing for substantial inflexibility. Accordingly, in at least some approaches, disk drives configured with procedures appropriate for power-saving in a particular environment (such as a network server environment versus a workstation (desktop) or laptop environment) may be entirely inappropriate for use in a different environment. This approach means multiple models are needed to serve multiple needs, which can undesirably increase a number of costs such as costs associated with the design, selection, installation, manufacture and/or maintenance of a multiplicity of models. If drives are used outside the specified environment, the rigidity of this approach can prevent further optimization or reduction in power usage.
Furthermore, the storage and/or execution of potentially long and complex power-saving programming within the disk drive requires consumption of disk drive resources, such as disk drive power resources (as well as, potentially, memory resources and/or computing or logic resources). In many systems, the power and/or heat budget of a disk drive is substantially more constrained than that of the host system.
Accordingly, it would be useful to provide a method and apparatus for saving power in a drive without the power-saving features being substantially based in the disk drive and, preferably, while still accommodating at least some performance enhancement. Preferably, power-saving is implemented so as to provide for flexibility, such as more readily accommodating multiple environments and/or improvements.